package day13;

import java.io.*;

/*本类用于测试序列化与反序列化*/
public class TestSerializable {
    public static void main(String[] args) {
        method();//本方法用来测试序列化
        method2();//本方法用来测试反序列化
    }
    /*序列化方法*/
    private static void method() {
        //声明在本方法中生效的序列化类型的变量,局部变量需要初始化,本处值为null
        ObjectOutputStream out = null;
        try{
            //1.创建用来序列化的流对象OOS
            out = new ObjectOutputStream(
                    new FileOutputStream("D:\\ready\\1.txt"));
            //2.创建要序列化的Student对象
            Student s = new Student
                    (888,"涛涛","地球上",'男');
            //3.通过OOS流对象来序列化对象输出到指定文件
            out.writeObject(s);
            System.out.println("恭喜您!序列化成功!");
        }catch (Exception e){
            e.printStackTrace();//当捕获到异常时,打印错误信息到控制台
        }finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    /*反序列化方法*/
    private static void method2() {
        //声明在本方法中生效的反序列化类型的变量,局部变量需要初始化,本处值为null
        ObjectInputStream in = null;
        try{
            //1.获取反序列化的流对象OIS
            in = new ObjectInputStream
                    (new FileInputStream("D:\\ready\\1.txt"));
            //2.通过流对象进行反序列化
            Object o = in.readObject();
            System.out.println(o);
            System.out.println("恭喜您!反序列化成功!");
        }catch (Exception e){
            System.out.println("很抱歉!反序列化失败!");
            e.printStackTrace();
        }finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

}
